package com.manager.devicemanager.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.manager.devicemanager.entity.UserInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.manager.devicemanager.vo.UserInfoVO;

import java.util.Collection;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wpf
 * @since 2025-05-17
 */
public interface IUserInfoService extends IService<UserInfo> {

    /**
     * <p>
     * 批量insert,主键冲突时update
     * </p>
     *
     *
     * @param list
       * @author: wpf
       * @since: 2025-05-17
     */
    void batchInsertOnDuplicateKeyUpdate(Collection<UserInfo> list);
    
    /**
     * <p>
     * 批量insert,主键冲突时忽略
     * </p>
     *
     *
     * @param list
   * @author: wpf
   * @since: 2025-05-17
     */
    void batchInsertOnDuplicateKeyIgnore(Collection<UserInfo> list);


     IPage<UserInfo> pageWithoutPassword(Page<UserInfo> page, UserInfoVO userInfo);

    /**
     * 重置用户密码
     * @param id 用户 ID
     * @return 操作是否成功
     */
    boolean resetPassword(String id);

    /**
     * 修改用户密码
     * @param id 用户 ID
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 操作是否成功
     */
    boolean updatePassword(String id, String oldPassword, String newPassword);

    /**
     * 检查用户名是否唯一
     * @param username 用户名
     * @param id 用户 ID，新增时为 null，修改时为用户 ID
     * @return 用户名唯一返回 true，否则返回 false
     */
    boolean isUsernameUnique(String username, String id);

    UserInfo getUserByUsername(String username);



}
